﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>#动态判断超时 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The #IfTimeout directive sets the maximum time that may be spent evaluating a single #动态判断 expression." />
<meta name="ahk:equiv-v1" content="commands/_IfTimeout.htm" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>


<h1>#动态判断超时</h1>

<p>设置计算单个 <a href="_HotIf.htm">#动态判断</a> 表达式可以使用的最大时间.</p>

<pre class="Syntax"><span class="func">#动态判断超时</span> Timeout</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Timeout</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>全局有效的超时值, 单位为毫秒(ms).</p>
  </dd>

</dl>

<h2 id="Remarks">备注</h2>
<p>设置超时时间是为了防止表达式计算时间过长从而延迟了键盘输入. 如果超过了设定的超时值, 表达式会继续计算, 但键盘钩子将假定表达式结果为假而继续执行.</p>
<p>如果脚本中未使用此指令, 那么程序会默认设置为 1000.</p>
<p id="LowLevelHooksTimeout">注意系统使用它自己的超时时间, 系统超时值由以下注册表项中的 DWORD 类型值 <em>LowLevelHooksTimeout</em> 定义:</p>
<p><b>HKEY_CURRENT_USER\Control Panel\Desktop</b></p>
<p>如果超过了系统的超时时间, 那么系统可能会停止调用脚本的键盘钩子, 从而阻止钩子热键工作, 直到键盘钩子重新注册或脚本<a href="Reload.htm">重新加载</a>. 钩子 <em>通常</em> 可以通过<a href="Suspend.htm">挂起</a>或取消挂起所有热键来重新注册.</p>
<p>微软的文档中关于超时的细节是不清楚的, 但是研究表明 Windows 7 和更高版本的情况是这样的: 如果没有定义 <em>LowLevelHooksTimeout</em>, 默认的超时时间是 300ms. 钩子最多可以超时 10 次, 但如果超时第 11 次, 则会被自动移除.</p>
<p>如果一个给定的热键具有多个 #动态判断 变体, 超时可能会独立地应用到每个变体, 从而更有可能导致系统超时被超过. 这种情况可能会在以后的版本中进行修改.</p>
<h2 id="Related">相关</h2>
<p><a href="_HotIf.htm">#动态判断</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>#动态判断超时 10 <em>; 设置超时时间为 10 ms.</em></pre>
</div>

</body>
</html>